package com.carrent.bus.controller;

import com.carrent.bus.domain.Customer;
import com.carrent.bus.service.CustomerService;
import com.carrent.bus.service.RentService;
import com.carrent.bus.vo.RentVo;
import com.carrent.sys.constast.SysConstast;
import com.carrent.sys.domain.User;
import com.carrent.sys.utils.DataGridView;
import com.carrent.sys.utils.RandomUtils;
import com.carrent.sys.utils.ResultObj;
import com.carrent.sys.utils.WebUtils;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * 汽车出租管理的控制器
 */
@RestController
@Api(tags = "汽车出租管理的控制器")
@RequestMapping(value = "rent")
public class RentController {

    @Autowired
    private CustomerService customerService;
    @Autowired
    private RentService rentService;

    /***************汽车出租管理*****************/

    /**
     * 汽车出租管理--检查身份证号是否存在
     */
    @RequestMapping("checkCustomerExist")
    public ResultObj checkCustomerExist(RentVo rentVo) {
        Customer customer=customerService.queryCustomerByIdentity(rentVo.getIdentity());
        if(null!=customer) {
            return ResultObj.STATUS_TRUE;
        }else {
            return ResultObj.STATUS_FALSE;
        }
    }

    /**
     * 汽车出租管理--初始化添加出租单的表单数据
     */
    @RequestMapping("initRentFrom")
    public RentVo initRentFrom(RentVo rentVo){
        //身份证号、出租价格、车牌号前端已封装
        //1.生成出租单号
        rentVo.setRentid(RandomUtils.createRentid(SysConstast.CAR_ORDER_CZ));
        //2.起租时间
        rentVo.setBegindate(new Date());
        //3.操作员
        User user=(User) WebUtils.getHttpSession().getAttribute("user");
        rentVo.setOpername(user.getRealname());
        return rentVo;
    }

    /**
     * 汽车出租管理--保存出租单信息
     */
    @RequestMapping("saveRent")
    public ResultObj saveRent(RentVo rentVo){
        try {
            //创建时间
            rentVo.setCreatetime(new Date());
            //设置归还状态--0代表未归还，1代表已归还
            rentVo.setRentflag(SysConstast.RENT_BACK_FALSE);
            int i = rentService.insertRentByRentVo(rentVo);
            if (i>0){
                System.out.println("添加成功");
                return ResultObj.ADD_SUCCESS;
            }
            return ResultObj.ADD_ERROR;
        }catch (Exception e){
            return ResultObj.ADD_ERROR;
        }
    }

    /***************出租单管理*****************/

    /**
     * 出租单管理--查询所有出租单
     * @return
     */
    @RequestMapping("loadAllRent")
    public DataGridView queryAllRent(RentVo rentVo){
        return rentService.queryAllRent(rentVo);
    }

    /**
     * 出租单管理--修改出租单updateRent
     */
    @RequestMapping("updateRent")
    public ResultObj updateRent(RentVo rentVo) {
        try {
            //保存
            this.rentService.updateRent(rentVo);

            return ResultObj.UPDATE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.UPDATE_ERROR;
        }
    }

    /**
     * 出租单管理--删除出租单
     */
    @RequestMapping("deleteRent")
    public ResultObj deleteRent(RentVo rentVo) {
        try {
            //删除
            rentService.deleteRent(rentVo);

            return ResultObj.DELETE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.DELETE_ERROR;
        }
    }


}
